MySQL パラメータチューニング innodb_buffer_pool系
InnoDBはバッファプールを使って、ページ読み取り/書き込み時のディスクIOを減らせるようになってる。 基本的にこのバッファプールのサイズは大きい方が良い。
大きければ大きいほど、ディスク上のデータをメモリに置いておくことができるので、ディスクIOの頻度が下がる。
ただし!大きすぎて、他プロセスが利用するメモリ領域まで支配してしまうと、スワッピングが起きちゃうので注意。
逆に性能が悪くなります。
point.icon innodb_buffer_pool_sizeを増やすための見極め
バッファプールヒット率が低いなら、サイズを大きくすべき時!!
ヒット率の計算方法参考
performance_schemaなら...
innodb_buffer_pool_reads、innodb_buffer_pool_read_requestsを利用して計算する。
バッファプールヒット率
= 1-(innodb_buffer_pool_reads/innodb_buffer_pool_read_requests)x100(%)
このヒット率が低いということは、それだけディスクに対する読み出しIOが走ってることを意味します。
重要.icon なので、対策としてはパラメータ「innodb_buffer_pool_size」を大きくしてください。
ただ、もし大きくしすぎると、他プロセスの使用量を食ってしまうという場合は...!!
こればっかりはメモリサイズを大きくしてください...mm
innodb_buffer_pool_sizeで指定した大きさの5 ~ 10%多くメモリ消費される
これには気をつける。
ここで一つ注意がある。innodb_buffer_pool_sizeはバッファプールそのもののサイズを指定するオプションだが、InnoDBはバッファプールのサイズに比例してメモリを消費するオブジェクトが存在する。そのため、innodb_buffer_pool_sizeよりも5~10%ほど多くメモリを消費するということを覚えておこう。